package com.bba.manager.as.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bba.manager.as.service.IRepairService;
import com.bba.manager.common.model.as.DTO.RepairDTO;
import com.bba.manager.common.model.as.Repair;
import com.bba.manager.common.model.as.VO.repairQuery;
import com.bba.manager.common.util.ResponseVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 汽车维修表 前端控制器
 * </p>
 *

 * 这是一个用于处理汽车维修相关请求的控制器类，提供了维修记录的查询和状态更新功能。
 *
 * @author SYANDZZY 代码作者
 * @since 2025-08-12 代码创建日期或版本开始日期
 */
@RestController
@RequestMapping("/repair")
public class RepairController {

    @Autowired
    private IRepairService repairService;



    /**
     * 根据员工ID分页查询维修记录
     *
     * @param employeeId 员工ID，用于查询该员工负责的维修记录
     * @param current 当前页码，用于分页查询
     * @param size 每页大小，用于分页查询
     * @return 返回分页后的维修记录数据
     */
    @GetMapping("/listByEmployee") // 定义请求路径，完整路径为"/repair/listByEmployee"
    public IPage listByEmployee(@RequestParam int employeeId,@RequestParam Integer current,@RequestParam Integer size) { // 方法名和参数列表
        return repairService.listByEmployee(employeeId, current, size); // 调用服务层方法获取分页数据
    }



    /**
     * 更新维修记录的状态
     *
     * @param repairNo 维修记录编号，用于标识需要更新的维修记录
     * @param status 新的状态值，用于更新维修记录的状态
     */
    @GetMapping("/updateStatus") // 定义请求路径，完整路径为"/repair/updateStatus"
    public void updateStatus(Long repairNo, String status) { // 方法名和参数列表
        repairService.updateStatus(repairNo, status); // 调用服务层方法更新维修记录状态
    }

    /**
     * 更新维修记录的类型
     *
     * @param repairNo 维修记录编号，用于标识需要更新的维修记录
     * @param type 新的类型值，用于更新维修记录的类型
     */
    @GetMapping("/updateType")
    public ResponseVO updateType(Long repairNo, String type) { // 方法名
        repairService.updateType(repairNo, type); // 调用服务层方法更新维修记录类型
        return ResponseVO.success(); // 返回成功响应
    }

    /**
     * 保存维修单
     */
    @PostMapping("/save") // 定义请求路径，完整路径为"/repair/save"
    public ResponseVO save(@RequestBody Repair repair) { // 方法名和参数列表
        repairService.saveOrUpdate(repair); // 调用服务层方法保存维修单
        return ResponseVO.success(repair); // 返回成功响应
    }

    /**
     * 删除维修单
     */
    @GetMapping("/delete") // 定义请求路径，完整路径为"/repair/delete"
    public ResponseVO delete(Long repairNo) { // 方法名和参数列表
        repairService.removeById(repairNo); // 调用服务层方法删除维修单
        return ResponseVO.success(); // 返回成功响应
        }

    /**
     * 根据维修订单id返回所有与之相关的零件
     */
    @GetMapping("/getPartsByRepairNo/{repairNo}")
    public ResponseVO getPartsByRepairNo(@PathVariable Long repairNo) {
        RepairDTO repairDTO = repairService.getRepairDTO(repairNo);
        return ResponseVO.success(repairDTO); // 返回成功响应
    }
    //查询维修单
    @GetMapping("/getRepair")
    public ResponseVO getRepairByRepairNo( repairQuery repairQuery) {
            return ResponseVO.success(repairService.listByInfo(repairQuery)); // 返回成功响应
    }
}
